package br.gov.ibama.client.componentes;

import java.util.ArrayList;
import java.util.List;

import br.gov.ibama.client.eventos.BasisEvent;
import br.gov.ibama.client.eventos.BasisEventHandler;
import br.gov.ibama.client.eventos.EventoGlobal;

import com.google.gwt.event.shared.SimpleEventBus;
import com.smartgwt.client.widgets.form.fields.SectionItem;

public class SecaoBasis extends SectionItem {

	private List<String> campos;
	private String titulo = "";
	private SimpleEventBus eventoGlobal = EventoGlobal.getInstance();
	private boolean erro;
	
	

	public SimpleEventBus getEventoGlobal() {
		return eventoGlobal;
	}

	public void setEventoGlobal(SimpleEventBus eventoGlobal) {
		this.eventoGlobal = eventoGlobal;
	}

	public SecaoBasis(String name, String title) {
		super(name, title);
		this.setDefaultValue(title);
		this.campos = new ArrayList<String>();
		this.titulo = title;
		carregaConfiguracoes();
		this.setSectionExpanded(false);
		setErro(false);
	}

	public boolean isErro() {
		return erro;
	}

	public void setErro(boolean erro) {
		this.erro = erro;
	}

	public void carregaConfiguracoes() {
		eventoGlobal.addHandler(BasisEvent.type, new BasisEventHandler() {
			public void onFire(BasisEvent event) {
				int x = 0;
				for (x = 0; x < getCampos().size(); x++) {
					if (event.getNomeSecao().equals(getCampos().get(x))) {
						if (event.isErro()) {
							erroNaSecao();
						} else {
							semErroNaSecao();
						}
					}
				}
			}
		});
	}

	public void erroNaSecao() {
		this.setDefaultValue(BasisConstantes.IMG_ERRO_SECAO + " " + this.titulo);
	}

	public void semErroNaSecao() {
		this.setDefaultValue(this.titulo);
	}

	public List<String> getCampos() {
		return campos;
	}

	private void adicionarCampo(String campo) {
		getCampos().add(campo);
	}

	public void setCampos(List<String> campos) {
		this.campos = campos;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	@Override
	public void setItemIds(String... itemIds) {
		int x = 0;
		for (x = 0; x < itemIds.length; x++) {
			adicionarCampo(itemIds[x]);
		}
		super.setItemIds(itemIds);
	}

}
